package com.ruoyi.system.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.domain.*;

/**
 * 库存物品Service接口
 *
 * @author ruoyi
 * @date 2025-10-05
 */
public interface ICsInventoryService extends IService<CsInventory> {
    /**
     * 查询库存物品
     *
     * @param id 库存物品主键
     * @return 库存物品
     */
    public CsInventory selectCsInventoryById(Long id);

    /**
     * 查询库存物品列表
     *
     * @param csInventory 库存物品
     * @return 库存物品集合
     */
    public List<CsInventoryVo> selectCsInventoryList(CsInventory csInventory);

    public CsInventoryTotalVo selectCsInventoryTotal(String name, Long account);

    /**
     * 新增库存物品
     *
     * @param csInventory 库存物品
     * @return 结果
     */
    public int insertCsInventory(CsInventory csInventory);

    /**
     * 修改库存物品
     *
     * @param csInventory 库存物品
     * @return 结果
     */
    public int updateCsInventory(CsInventory csInventory);

    /**
     * 批量删除库存物品
     *
     * @param ids 需要删除的库存物品主键集合
     * @return 结果
     */
    public int deleteCsInventoryByIds(String ids);

    /**
     * 删除库存物品信息
     *
     * @param id 库存物品主键
     * @return 结果
     */
    public int deleteCsInventoryById(Long id);

    public int upsetInventory(CsBuyRecord csBuyRecord);

    public int updateInventoryByOldBuyRecord(CsBuyRecord newBuyRecord, CsBuyRecord oldCsBuyRecord);

    public void refreshAvailableQuantity();

    public List<CsInventory> getAvailableForSaleName(String name, Long account);

    public int upsetInventoryByCsSalesRecord(CsSalesRecord csSalesRecord);

    public int updateInventoryByOldSalesRecord(CsSalesRecord newSalesRecord, CsSalesRecord oldSalesRecord);

    public int refreshPlatformPriceBySteamDT();
}
